#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//void rotate(int* nums, int numsSize, int k)
//{
//    int i = 0;
//    int tmp = 0;
//    for (i = 0; i < k; i++)
//    {
//        tmp = nums[numsSize - 1];
//        int j = 0;
//        for (j = numsSize-1; j > 0; j--)
//        {
//            nums[j] = nums[j - 1];
//        }
//        nums[0] = tmp;
//    }
//}

//void rotate(int* nums, int numsSize, int k)
//{
//    int* arr = (int*)malloc(numsSize * sizeof(int));
//    if (arr == NULL)
//    {
//        return;
//    }
//    int i = 0;
//    for (i = 0; i < k; i++)
//    {
//        arr[i] = nums[numsSize - k + i];
//    }
//    int j = 0;
//    for (j = numsSize - 1; j >= k; j--)
//    {
//        nums[j] = nums[j - k];
//    }
//    for (i = 0; i < k; i++)
//    {
//        nums[i] = arr[i];
//    }
//}
//
//void rotate(int* nums, int numsSize, int k)
//{
//    assert(nums);
//    int* arr = (int*)malloc(numsSize * sizeof(int));
//    if (arr == NULL)
//    {
//        return;
//    }
//    int i = 0;
//    for (i = numsSize - 1; i >= 0; i--)
//    {
//        arr[(i + k) % numsSize] = nums[i];
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        nums[i] = arr[i];
//    }
//    free(arr);
//    arr = NULL;
//}
//
//int main()
//{
//    int arr[] = { 1,2,3,4,5,6,7 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    int k = 3;
//
//    rotate(arr,sz,k);
//    int i = 0;
//    for (i = 0; i < 7; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}


//
//int missingNumber(int* nums, int numsSize)
//{
//    int i = 0;
//    int ret = 0;
//    for (i = 0; i < numsSize; i++)
//    {
//        ret ^= i;
//    }
//    for (i = 0; i <= numsSize; i++)
//    {
//        ret ^= nums[i];
//    }
//    return ret;
//}

int missingNumber(int* nums, int numsSize)
{

    int i = 0;
    int ret = 0;
    for (i = 0; i < numsSize; i++)
    {
        ret ^= *(nums + i);
    }
    for (i = 0; i <= numsSize; i++)
    {
        ret ^= i;
    }

    return ret;

}

int main()
{

    int arr[] = { 0,1,3};
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ret = missingNumber(arr, sz);
    printf("%d", ret);
    return 0;
}